package com.laze.mywanandroid.base

import android.os.Bundle
import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity
import com.hjq.toast.ToastUtils
import com.laze.mywanandroid.R
import com.laze.mywanandroid.utils.SystemBar.StatusBarUtil
import com.orhanobut.logger.Logger
import kotlinx.android.synthetic.main.activity_base_top_bar.*


abstract class BaseActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_base_top_bar)

        //这里注意下 因为在评论区发现有网友调用setRootViewFitsSystemWindows 里面 winContent.getChildCount()=0 导致代码无法继续
        //是因为你需要在setContentView之后才可以调用 setRootViewFitsSystemWindows
        //当FitsSystemWindows设置 true 时，会在屏幕最上方预留出状态栏高度的 padding
        StatusBarUtil.setRootViewFitsSystemWindows(this,true);
        //设置状态栏透明
        StatusBarUtil.setTranslucentStatus(this);
        //一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清
        //所以如果你是这种情况,请使用以下代码, 设置状态使用深色文字图标风格, 否则你可以选择性注释掉这个if内容
        if (!StatusBarUtil.setStatusBarDarkTheme(this, true)) {
            //如果不支持设置深色风格 为了兼容总不能让状态栏白白的看不清, 于是设置一个状态栏颜色为半透明,
            //这样半透明+白=灰, 状态栏的文字能看得清
            StatusBarUtil.setStatusBarColor(this,0x55000000);
        }

        setSupportActionBar(toolbar)
        supportActionBar?.setDisplayShowTitleEnabled(false)
        LayoutInflater.from(this@BaseActivity).inflate(getContentView(), viewContent)
        Logger.e("当前Activity:${this.javaClass.simpleName}")
        toolTitle.text = getTitleText()
        back.setOnClickListener { finish() }
        initView()
        initData(savedInstanceState)

    }

    /** 获取布局*/
    abstract fun getContentView(): Int
    /** 设置title*/
    abstract fun getTitleText(): String

    /** 初始化view*/
    abstract fun initView()

    /** 初始化数据*/
    abstract fun initData(savedInstanceState: Bundle?)

    /** 打印toast*/
    open fun toast(str: String) {
        ToastUtils.show(str)
    }
}